home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib15.dsk / BLOCK SHAPE MAKER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  4KB  |  69 lines

  1. 10  REM  **********************
  2. 11  REM  * BLOCK SHAPE MAKER  *
  3. 12  REM  * BY ROBERT DEVINE   *
  4. 13  REM  * COPYRIGHT (C) 1983 *
  5. 14  REM  * BY MICROSPARC, INC *
  6. 15  REM  * LINCOLN, MA. 01773 *
  7. 16  REM  **********************
  8. 20  PRINT  CHR$(4)"BLOAD BLOCK ROUTINES $925E": HIMEM: 37470: REM  THIS LOADS ROUTINES THROUGH PART 2 AND ONLY SETS HIMEM TO PROTECT THOSE
  9. 30  FOR X = 768 TO 791: READ Y: POKE X,Y: NEXT :X = 0:Y = 0: REM  POKE BIT RETRIEVER IN MEMORY
  10. 40  DATA  164,250,177,38,133,251,162,0,134,252,70,251,38,252,96,164,250,177,38,9,128,145,38,96
  11. 50  TEXT : HOME : PRINT "IF PICTURE IS NOT IN MEMORY, LOAD IT": PRINT "BEFORE RUNNING THIS PROGRAM.": PRINT : PRINT 
  12. 60  PRINT "IS PICTURE IN MEMORY Y/N ?";: GET A$: PRINT : IF A$ = "N"  THEN  PRINT : PRINT "PLEASE LOAD PICTURE NOW.": END 
  13. 70  PRINT : PRINT "WHAT PAGE IS YOUR PICTURE ON (1/2) ?";: GET A: PRINT : PRINT : PRINT : IF A <1  OR A >2  THEN 70
  14. 80  ON (A < >2) GOTO 100: PRINT "PLEASE ENTER THE FOLLOWING COMMANDS SO": PRINT "THAT WE CAN WORK ON PAGE 1": PRINT "CALL -151:2000<4000.5FFFM:3D0G:GOTO40": PRINT : PRINT 
  15. 90  PRINT "ENTER <RETURN> AFTER EACH COMMAND": END 
  16. 100  POKE 49232,0: POKE 49239,0: POKE 49235,0:F = 1: REM  DISPLAY PICTURE/SET SPEED=SLOW
  17. 110  CALL 37799:P = 3: REM  SETUP YTABLE POINTERS/SET PLOT MODE
  18. 115  POKE 230,32:C = 0: GOTO 340
  19. 120  VTAB 15: GET A$: PRINT 
  20. 130  IF A$ = "U"  THEN Y = Y -F: GOTO 280: REM  MOVE UP
  21. 140  IF A$ = "D"  THEN Y = Y +F: GOTO 280: REM  MOVE DOWN
  22. 150  IF A$ =  CHR$(8)  THEN X = X -F: GOTO 280: REM  MOVE LEFT
  23. 160  IF A$ =  CHR$(21)  THEN X = X +F: GOTO 280: REM  MOVE RIGHT
  24. 170  IF A$ = "F"  THEN F = 5: GOTO 120: REM  CHANGE TO FAST
  25. 180  IF A$ = "S"  THEN F = 1: GOTO 120: REM  CHANGE TO SLOW
  26. 190  IF A$ =  CHR$(32)  THEN  POKE 49234,0: GOTO 120: REM  SPACE BAR/FULL SCREEN GRAPHICS
  27. 200  IF A$ =  CHR$(27)  THEN  POKE 49235,0: GOTO 120: REM  ESCAPE/GET TEXT WINDOW BACK
  28. 210  IF A$ = "R"  THEN C = 1: CALL 783: GOTO 370: REM  CANCEL HPLOT/SET COLOR BIT
  29. 220  IF A$ =  CHR$(19)  THEN  TEXT : GOTO 490: REM  READY TO SAVE SHAPE
  30. 230  IF A$ = "C"  THEN C = 1: GOTO 120: REM  CANCEL HPLOT
  31. 240  IF A$ = "W"  THEN C = 0: GOTO 120: REM  RESET HPLOT
  32. 250  IF A$ = "P"  THEN P = 3: GOTO 340: REM  ENTER PLOT MODE
  33. 260  IF A$ = "N"  THEN P = 0: GOTO 340: REM  ENTER NOPLOT MODE
  34. 270  GOTO 120: REM  NO LEGAL COMMAND FOUND
  35. 280  ON (C = 1) GOTO 360: HCOLOR= 0: ON (P = 0) GOTO 290: HCOLOR= 3
  36. 290  HPLOT XC,YC
  37. 300  IF X <0  THEN X = 0
  38. 310  IF X >279  THEN X = 279
  39. 320  IF Y <0  THEN Y = 0
  40. 330  IF Y >191  THEN Y = 191
  41. 340  ON (C = 1) GOTO 360:XC = X:YC = Y: HCOLOR= P: ON (P = 0) GOTO 350: HCOLOR= 3
  42. 350  HPLOT XC,YC
  43. 360  VTAB 21: PRINT "X="X"  ";: HTAB 8: PRINT "Y="Y"  ";: HTAB 16: PRINT "BYTE=" INT(X/7)"  ";: HTAB 25: PRINT "ADDRESS=";
  44. 370  POKE 6,Y: CALL 37777:B =  PEEK(38) + PEEK(39) *256 + INT(X/7): PRINT B"   ": REM  PRINT BYTE DECIMAL ADDRESS
  45. 380  VTAB 23: PRINT "BYTE VALUE=" PEEK(B)"  ";: HTAB 16: PRINT "BITS=";: REM  PRINT VALUE OF BYTE
  46. 390  POKE 250, INT(X/7): REM  SET BYTE 0 OFFSET
  47. 400 B$ = "": CALL 768: IF  PEEK(252) = 1  THEN B$ = "1": GOTO 420
  48. 410 B$ = "0"
  49. 420  FOR M = 1 TO 7: CALL 774: IF  PEEK(252) = 1  THEN B$ = B$ +"1": GOTO 440
  50. 430 B$ = B$ +"0"
  51. 440  NEXT : FOR M = 1 TO 8
  52. 450  IF M = X -(7 *( INT(X/7))) +1  THEN  FLASH : REM  FLASH FOR BIT WE'RE ON
  53. 460  IF M = 8  THEN  INVERSE : REM  INVERSE FOR COLOR BIT
  54. 470  PRINT  MID$ (B$,M,1);: NORMAL : PRINT " ";
  55. 480  NEXT : PRINT "  ": GOTO 120
  56. 490  HOME : INPUT "ENTER VT ";VT: PRINT 
  57. 500  INPUT "ENTER VB ";VB: PRINT 
  58. 510  INPUT "ENTER HR ";HR: PRINT 
  59. 520  INPUT "ENTER HL ";HL: PRINT : PRINT : PRINT 
  60. 530  INPUT "WHAT IS THE SHAPE# ";SHAPE: PRINT 
  61. 540  HIMEM: SHAPE *256: REM  RESET HIMEM TO PROTECT SHAPE
  62. 550  POKE 251,SHAPE: POKE 252,VT: POKE 253,VB: POKE 254,HR: POKE 255,HL: CALL 37729: REM  CREATE SHAPE TABLE
  63. 560  HGR : POKE 251,SHAPE: CALL 37679: REM  DRAW IT ON THE SCREEN
  64. 570  VTAB 22: PRINT "HERE IS THE SHAPE IN YOUR SHAPE TABLE.": PRINT "DO YOU WANT TO SAVE IT (Y/N) ?";: GET A$
  65. 580  IF A$ = "N"  THEN  END 
  66. 590  HOME : VTAB 22: INPUT "WHAT IS THE NAME ";A$
  67. 600  HOME : VTAB 22: PRINT "SAVING SHAPE TO DISK"
  68. 610  PRINT  CHR$(4)"BSAVE "A$",A"SHAPE *256",L"(VB -VT +1) *(HR -HL +1)
  69. 620  END